【MySQL】浮動小数点数型・固定小数点数型(FLOAT / DOUBLE / DECIMAL / NUMERIC )
MySQLの小数点数型について解説します。
検証環境
小数点数型
小数点数型は小数点以下がある数値の型です。
大きく分けて浮動小数点数型と固定小数点数型の2つの小数点数型が存在します。
浮動小数点数型
浮動小数点数型は簡単に説明すると桁数を値に応じて変動できる小数点数型です。
詳しい説明は数学的かつ記憶領域の知識が必要なため、割愛させていただきます。
固定小数点数型
固定小数点数型は桁数が固定された小数点数型です。
全体の桁数と小数点数以下の桁数を指定します。
MySQLの小数点数型は浮動小数点数型が2種類、と固定小数点数型が1種類の合計3種類の小数点数型があり、型によって記憶可能な幅が異なります。
種類 | 型 |
---|---|
浮動小数点数型 | FLOAT |
浮動小数点数型 | DOUBLE |
固定小数点数型 | DECIMAL(NUMERIC) |
FLOAT
FLOATは浮動小数点数型です。
基本構文
カラム名 FLOAT
サンプル
mysql> CREATE TABLE sample ( num FLOAT );
Query OK, 0 rows affected (0.01 sec)
mysql> INSERT INTO sample VALUE ( 123.4567 );
Query OK, 1 row affected (0.00 sec)
DOUBLE
DOUBLEはFLOATよりもデータサイズが大きい値を保持できる浮動小数点数型です。
基本構文
カラム名 DOUBLE
サンプル
mysql> CREATE TABLE sample ( num DOUBLE );
Query OK, 0 rows affected (0.01 sec)
mysql> INSERT INTO sample VALUE ( 1234567.891234 );
Query OK, 1 row affected (0.00 sec)
DECIMAL(NUMERIC)
DECIMALは固定小数点数型です。
基本構文
カラム名 DECIMAL(全体桁数, 小数点数以下桁数)
型名の後の丸括弧(()
)内に全体の桁数と小数点数以下の桁数を指定します。
サンプル
mysql> CREATE TABLE sample ( num DECIMAL(7, 3) );
Query OK, 0 rows affected (0.01 sec)
mysql> INSERT INTO sample VALUE ( 1234.567 );
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO sample VALUE ( 1234.56789 );
Query OK, 1 row affected, 1 warning (0.00 sec)
mysql> SELECT * FROM sample;
+----------+
| num |
+----------+
| 1234.567 |
| 1234.568 |
+----------+
2 rows in set (0.00 sec)
mysql> INSERT INTO sample VALUE ( 12345.678 );
ERROR 1264 (22003): Out of range value for column 'num' at row 1
小数点数以下が指定桁数を超える場合、自動で四捨五入されますが、整数部分は指定桁数を越えるとエラーになります。
DECIMALはNUMERICに置き換えて記述することも可能です。
mysql> CREATE TABLE sample ( num NUMERIC(7, 3) );
Query OK, 0 rows affected (0.01 sec)
mysql> INSERT INTO sample VALUE ( 1234.6784 );
Query OK, 1 row affected, 1 warning (0.00 sec)
mysql> SELECT * FROM sample;
+----------+
| num |
+----------+
| 1234.678 |
+----------+
1 row in set (0.00 sec)